์๋ฐ์คํฌ๋ฆฝํธ ์ต์์ Await์ ๊ทธ ๊ฐ๋ ฅํ ๋ชจ๋ ์ด๊ธฐํ ํจํด์ ํ์ํด ๋ณด์ธ์. ํ๋ก์ ํธ์์ ๋น๋๊ธฐ ์์ , ์์กด์ฑ ๋ก๋ฉ, ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ์ํด ์ด๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ฐ์ธ์.
์๋ฐ์คํฌ๋ฆฝํธ ์ต์์ Await: ์ต์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ ๋ชจ๋ ์ด๊ธฐํ ํจํด
ES ๋ชจ๋(ESM)๊ณผ ํจ๊ป ๋์ ๋ ์ต์์ Await๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ชจ๋ ์ด๊ธฐํ ์ค ๋น๋๊ธฐ ์์ ์ ์ฒ๋ฆฌํ๋ ๋ฐฉ์์ ํ์ ์ ์ผ๋ก ๋ฐ๊พธ์์ต๋๋ค. ์ด ๊ธฐ๋ฅ์ ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋จ์ํํ๊ณ ๊ฐ๋ ์ฑ์ ํฅ์์ํค๋ฉฐ, ์์กด์ฑ ๋ก๋ฉ ๋ฐ ๊ตฌ์ฑ ๊ด๋ฆฌ๋ฅผ ์ํ ๊ฐ๋ ฅํ๊ณ ์๋ก์ด ํจํด์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ๊ธ์์๋ ์ต์์ Await์ ๊น์ ๋ด์ฉ์ ํ๊ณ ๋ค์ด ๊ทธ ์ด์ , ์ฌ์ฉ ์ฌ๋ก, ํ๊ณ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ํ๊ตฌํ์ฌ ์ฌ๋ฌ๋ถ์ด ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์๋๋ก ๋์ต๋๋ค.
์ต์์ Await๋ ๋ฌด์์ธ๊ฐ?
์ ํต์ ์ผ๋ก `await` ํํ์์ `async` ํจ์ ๋ด์์๋ง ํ์ฉ๋์์ต๋๋ค. ์ต์์ Await๋ ES ๋ชจ๋ ๋ด์์ ์ด ์ ํ์ ์ ๊ฑฐํ์ฌ, ๋ชจ๋ ์ฝ๋์ ์ต์์ ๋ ๋ฒจ์์ ์ง์ `await`๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํด์ค๋๋ค. ์ด๋ ํ๋ก๋ฏธ์ค๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ๋ชจ๋์ ์คํ์ ์ผ์ ์ค์งํ ์ ์์์ ์๋ฏธํ๋ฉฐ, ์ํํ ๋น๋๊ธฐ ์ด๊ธฐํ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ค์์ ๊ฐ๋จํ ์์ ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค:
// module.js
import { someFunction } from './other-module.js';
const data = await fetchDataFromAPI();
console.log('Data:', data);
someFunction(data);
async function fetchDataFromAPI() {
const response = await fetch('https://api.example.com/data');
const json = await response.json();
return json;
}
์ด ์์ ์์ ๋ชจ๋์ `fetchDataFromAPI()`๊ฐ ํด๊ฒฐ๋ ๋๊น์ง ์คํ์ ์ผ์ ์ค์งํฉ๋๋ค. ์ด๋ฅผ ํตํด `console.log`์ `someFunction()`์ด ์คํ๋๊ธฐ ์ ์ `data`๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ ๋น๋๊ธฐ ์์ ์ ์ฝ๋ฐฑ์ด๋ ํ๋ก๋ฏธ์ค๊ฐ ํ์ํ์ฌ ์ข ์ข ๋ณต์กํ๊ณ ๊ฐ๋ ์ฑ์ด ๋ฎ์ ์ฝ๋๋ฅผ ์ด๋ํ๋ ์ด์ ์ CommonJS ๋ชจ๋ ์์คํ ๊ณผ์ ๊ทผ๋ณธ์ ์ธ ์ฐจ์ด์ ์ ๋๋ค.
์ต์์ Await ์ฌ์ฉ์ ์ด์
์ต์์ Await๋ ์ฌ๋ฌ ๊ฐ์ง ์ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ๋จ์ํ๋ ๋น๋๊ธฐ ์ฝ๋: ์ฆ์ ์คํ ๋น๋๊ธฐ ํจ์ ํํ์(IIAFE)์ด๋ ๋น๋๊ธฐ ๋ชจ๋ ์ด๊ธฐํ๋ฅผ ์ํ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์์ฑ์ ์์ ์ค๋๋ค.
- ํฅ์๋ ๊ฐ๋ ์ฑ: ์คํ ํ๋ฆ์ด ์ฝ๋ ๊ตฌ์กฐ๋ฅผ ๊ทธ๋๋ก ๋ฐ์ํ๋ฏ๋ก ๋น๋๊ธฐ ์ฝ๋๋ฅผ ๋ ์ ํ์ ์ด๊ณ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค.
- ํฅ์๋ ์์กด์ฑ ๋ก๋ฉ: ๊ตฌ์ฑ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ด๊ธฐํ์ ๊ฐ์ด ๋น๋๊ธฐ ์์ ์ ์์กดํ๋ ์์กด์ฑ์ ๋ก๋ฉํ๋ ๊ณผ์ ์ ๋จ์ํํฉ๋๋ค.
- ์กฐ๊ธฐ ์ค๋ฅ ๊ฐ์ง: ๋ชจ๋ ๋ก๋ฉ ์ค ์กฐ๊ธฐ์ ์ค๋ฅ๋ฅผ ๊ฐ์งํ ์ ์๊ฒ ํ์ฌ ์๊ธฐ์น ์์ ๋ฐํ์ ์ค๋ฅ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- ๋ช ํํด์ง ๋ชจ๋ ์์กด์ฑ: ๋ชจ๋์ด ์์กด์ฑ์ ํด๊ฒฐ์ ์ง์ ๊ธฐ๋ค๋ฆด(await) ์ ์์ผ๋ฏ๋ก ๋ชจ๋ ์์กด์ฑ์ ๋ ๋ช ์์ ์ผ๋ก ๋ง๋ญ๋๋ค.
์ฌ์ฉ ์ฌ๋ก ๋ฐ ๋ชจ๋ ์ด๊ธฐํ ํจํด
์ต์์ Await๋ ์ฌ๋ฌ ๊ฐ๋ ฅํ ๋ชจ๋ ์ด๊ธฐํ ํจํด์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
1. ๋น๋๊ธฐ ๊ตฌ์ฑ ๋ก๋ฉ
๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ API ์๋ํฌ์ธํธ, ๊ตฌ์ฑ ํ์ผ ๋๋ ํ๊ฒฝ ๋ณ์์ ๊ฐ์ ์ธ๋ถ ์์ค์์ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ํด์ผ ํฉ๋๋ค. ์ต์์ Await๋ ์ด ๊ณผ์ ์ ๊ฐ๋จํ๊ฒ ๋ง๋ญ๋๋ค.
// config.js
const config = await fetch('/config.json').then(res => res.json());
export default config;
// app.js
import config from './config.js';
console.log('Configuration:', config);
์ด ํจํด์ `config` ๊ฐ์ฒด๊ฐ ๋ค๋ฅธ ๋ชจ๋์์ ์ฌ์ฉ๋๊ธฐ ์ ์ ์์ ํ ๋ก๋๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ๋ฐ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ์์ ํํ ์๊ตฌ์ฌํญ์ธ ๋ฐํ์ ๊ตฌ์ฑ์ ๋ฐ๋ผ ๋์ ์ผ๋ก ๋์์ ์กฐ์ ํด์ผ ํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค.
2. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ์ด๊ธฐํ
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ์ค์ ํ๋ ๊ฒ์ ์ข ์ข ๋น๋๊ธฐ ์์ ์ ํฌํจํฉ๋๋ค. ์ต์์ Await๋ ์ด ๊ณผ์ ์ ๋จ์ํํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฟผ๋ฆฌ๊ฐ ์คํ๋๊ธฐ ์ ์ ์ฐ๊ฒฐ์ด ์ค์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค.
// db.js
import { createPool } from 'pg';
const pool = new createPool({
user: 'dbuser',
host: 'database.example.com',
database: 'mydb',
password: 'secretpassword',
port: 5432,
});
await pool.connect();
export default pool;
// app.js
import pool from './db.js';
const result = await pool.query('SELECT * FROM users');
console.log('Users:', result.rows);
์ด ์์ ๋ ์ฟผ๋ฆฌ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ํ์ด ์ค์ ๋๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ด๋ ๊ฒฝ์ ์ํ(race condition)๋ฅผ ๋ฐฉ์งํ๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋๋ก ํฉ๋๋ค. ์ด ํจํด์ ์๊ตฌ ๋ฐ์ดํฐ ์ ์ฅ์์ ์์กดํ๋ ์์ ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ ๋ฐ ๋งค์ฐ ์ค์ํฉ๋๋ค.
3. ์์กด์ฑ ์ฃผ์ ๋ฐ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ
์ต์์ Await๋ ๋ชจ๋์ด ์์กด์ฑ์ ๋ด๋ณด๋ด๊ธฐ ์ ์ ๋น๋๊ธฐ์ ์ผ๋ก ํด๊ฒฐํ ์ ์๋๋ก ํ์ฌ ์์กด์ฑ ์ฃผ์ ๋ฐ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ๋ฅผ ์ฉ์ดํ๊ฒ ํ ์ ์์ต๋๋ค. ์ด๋ ์ํธ ์ฐ๊ฒฐ๋ ๋ชจ๋์ด ๋ง์ ํฌ๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํนํ ์ ์ฉํฉ๋๋ค.
// service-locator.js
const services = {};
export async function registerService(name, factory) {
services[name] = await factory();
}
export function getService(name) {
return services[name];
}
// my-service.js
import { registerService } from './service-locator.js';
await registerService('myService', async () => {
// Asynchronously initialize the service
await new Promise(resolve => setTimeout(resolve, 1000)); // Simulate async init
return {
doSomething: () => console.log('My service is doing something!'),
};
});
// app.js
import { getService } from './service-locator.js';
const myService = getService('myService');
myService.doSomething();
์ด ์์ ์์ `service-locator.js` ๋ชจ๋์ ์๋น์ค๋ฅผ ๋ฑ๋กํ๊ณ ๊ฒ์ํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. `my-service.js` ๋ชจ๋์ ์ต์์ Await๋ฅผ ์ฌ์ฉํ์ฌ ์๋น์ค ๋ก์ผ์ดํฐ์ ๋ฑ๋กํ๊ธฐ ์ ์ ์๋น์ค๋ฅผ ๋น๋๊ธฐ์ ์ผ๋ก ์ด๊ธฐํํฉ๋๋ค. ์ด ํจํด์ ๋์จํ ๊ฒฐํฉ(loose coupling)์ ์ด์งํ๊ณ ๋ณต์กํ ์ ํ๋ฆฌ์ผ์ด์ ์์ ์์กด์ฑ์ ๊ด๋ฆฌํ๊ธฐ ์ฝ๊ฒ ๋ง๋ญ๋๋ค. ์ด ์ ๊ทผ ๋ฐฉ์์ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐ ํ๋ ์์ํฌ์์ ์ผ๋ฐ์ ์ ๋๋ค.
4. `import()`๋ฅผ ์ด์ฉํ ๋์ ๋ชจ๋ ๋ก๋ฉ
์ต์์ Await๋ฅผ ๋์ `import()` ํจ์์ ๊ฒฐํฉํ๋ฉด ๋ฐํ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์กฐ๊ฑด๋ถ ๋ชจ๋ ๋ก๋ฉ์ด ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ ํ์ํ ๋๋ง ๋ชจ๋์ ๋ก๋ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ์ต์ ํํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
// app.js
if (someCondition) {
const module = await import('./conditional-module.js');
module.doSomething();
} else {
console.log('Conditional module not needed.');
}
์ด ํจํด์ ์ฌ์ฉํ๋ฉด ํ์์ ๋ฐ๋ผ ๋ชจ๋์ ๋ก๋ํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ผ ์ ์์ต๋๋ค. ์ด๋ ํญ์ ์ฌ์ฉ๋์ง๋ ์๋ ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์ ํนํ ์ ์ฉํฉ๋๋ค. ๋์ ๋ชจ๋ ๋ก๋ฉ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฒด๊ฐ ์ง์ฐ ์๊ฐ์ ์ค์ฌ ์ฌ์ฉ์ ๊ฒฝํ์ ํฌ๊ฒ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๊ณ ๋ ค์ฌํญ ๋ฐ ํ๊ณ
์ต์์ Await๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ด์ง๋ง, ๊ทธ ํ๊ณ์ ์ ์ฌ์ ์ธ ๋จ์ ์ ์ธ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ๋ชจ๋ ์คํ ์์: ๋ชจ๋์ด ์คํ๋๋ ์์๋ ์ต์์ Await์ ์ํด ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ํ๋ก๋ฏธ์ค๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋ชจ๋์ ์คํ์ ์ผ์ ์ค์งํ์ฌ, ํด๋น ๋ชจ๋์ ์์กดํ๋ ๋ค๋ฅธ ๋ชจ๋์ ์คํ์ ์ง์ฐ์ํฌ ์ ์์ต๋๋ค.
- ์ํ ์์กด์ฑ: ์ต์์ Await๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋์ ํฌํจํ๋ ์ํ ์์กด์ฑ์ ๊ต์ฐฉ ์ํ(deadlock)๋ก ์ด์ด์ง ์ ์์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด ๋ชจ๋ ๊ฐ์ ์์กด์ฑ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ์ต์์ Await๋ ES ๋ชจ๋ ์ง์์ ํ์๋ก ํ๋ฉฐ, ์ด๋ ์ค๋๋ ๋ธ๋ผ์ฐ์ ์์๋ ์ฌ์ฉํ์ง ๋ชปํ ์ ์์ต๋๋ค. Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋๋ ํ๊ฒฝ๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํด์ผ ํฉ๋๋ค.
- ์๋ฒ ์ธก ๊ณ ๋ ค์ฌํญ: Node.js์ ๊ฐ์ ์๋ฒ ์ธก ํ๊ฒฝ์์๋ ํด๋น ํ๊ฒฝ์ด ์ต์์ Await๋ฅผ ์ง์ํ๋์ง ํ์ธํด์ผ ํฉ๋๋ค (Node.js v14.8+).
- ํ ์คํธ ์ฉ์ด์ฑ: ์ต์์ Await๋ฅผ ์ฌ์ฉํ๋ ๋ชจ๋์ ํ ์คํธ ์ค์ ํน๋ณํ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค. ๋น๋๊ธฐ ์ด๊ธฐํ ๊ณผ์ ์ด ํ ์คํธ ์คํ์ ์ํฅ์ ์ค ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ ์คํธ ์ค ๋ชจ๋์ ๊ฒฉ๋ฆฌํ๊ธฐ ์ํด ๋ชจํน(mocking)๊ณผ ์์กด์ฑ ์ฃผ์ ์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
์ต์์ Await ์ฌ์ฉ์ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
์ต์์ Await๋ฅผ ํจ๊ณผ์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ ๋ คํ์ธ์:
- ์ต์์ Await ์ฌ์ฉ ์ต์ํ: ๋ชจ๋ ์ด๊ธฐํ์ ํ์ํ ๊ฒฝ์ฐ์๋ง ์ต์์ Await๋ฅผ ์ฌ์ฉํ์ธ์. ๋ชจ๋ ๋ด์์ ๋ฒ์ฉ ๋น๋๊ธฐ ์์ ์ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ ํผํด์ผ ํฉ๋๋ค.
- ์ํ ์์กด์ฑ ํผํ๊ธฐ: ๊ต์ฐฉ ์ํ๋ก ์ด์ด์ง ์ ์๋ ์ํ ์์กด์ฑ์ ํผํ๊ธฐ ์ํด ๋ชจ๋ ์์กด์ฑ์ ์ ์คํ๊ฒ ๊ณํํ์ธ์.
- ์ฐ์ํ๊ฒ ์ค๋ฅ ์ฒ๋ฆฌํ๊ธฐ: ๋น๋๊ธฐ ์ด๊ธฐํ ์ค ๋ฐ์ํ ์ ์๋ ์ ์ฌ์ ์ค๋ฅ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด `try...catch` ๋ธ๋ก์ ์ฌ์ฉํ์ธ์. ์ด๋ ์ฒ๋ฆฌ๋์ง ์์ ํ๋ก๋ฏธ์ค ๊ฑฐ๋ถ(unhandled promise rejection)๋ก ์ธํด ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ถฉ๋ํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
- ์๋ฏธ ์๋ ์ค๋ฅ ๋ฉ์์ง ์ ๊ณต: ๊ฐ๋ฐ์๊ฐ ๋น๋๊ธฐ ์ด๊ธฐํ์ ๊ด๋ จ๋ ๋ฌธ์ ๋ฅผ ์ง๋จํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋์์ด ๋๋๋ก ์ ์ตํ ์ค๋ฅ ๋ฉ์์ง๋ฅผ ํฌํจํ์ธ์.
- ํธํ์ฑ์ ์ํ ํธ๋์คํ์ผ๋ฌ ์ฌ์ฉ: ES ๋ชจ๋๊ณผ ์ต์์ Await๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ์ง์ํ์ง ์๋ ์ค๋๋ ๋ธ๋ผ์ฐ์ ๋ฐ ํ๊ฒฝ๊ณผ์ ํธํ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด Babel๊ณผ ๊ฐ์ ํธ๋์คํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ๋ชจ๋ ์์กด์ฑ ๋ฌธ์ํ: ๋ชจ๋ ๊ฐ์ ์์กด์ฑ, ํนํ ์ต์์ Await์ ๊ด๋ จ๋ ์์กด์ฑ์ ๋ช ํํ๊ฒ ๋ฌธ์ํํ์ธ์. ์ด๋ ๊ฐ๋ฐ์๊ฐ ์คํ ์์์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์ดํดํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
๋ค์ํ ์ฐ์ ๋ถ์ผ์ ์์
์ต์์ Await๋ ๋ค์ํ ์ฐ์ ๋ถ์ผ์์ ์์ฉ๋ฉ๋๋ค. ๋ช ๊ฐ์ง ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ์์๊ฑฐ๋: ์ํ ๋ชฉ๋ก ํ์ด์ง๊ฐ ๋ ๋๋ง๋๊ธฐ ์ ์ ์๊ฒฉ API์์ ์ํ ์นดํ๋ก๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํฉ๋๋ค.
- ๊ธ์ต ์๋น์ค: ๊ฑฐ๋ ํ๋ซํผ์ด ์์๋๊ธฐ ์ ์ ์ค์๊ฐ ์์ฅ ๋ฐ์ดํฐ ํผ๋์ ๋ํ ์ฐ๊ฒฐ์ ์ด๊ธฐํํฉ๋๋ค.
- ํฌ์ค์ผ์ด: ์ ์ ๊ฑด๊ฐ ๊ธฐ๋ก(EHR) ์์คํ ์ ์ ๊ทผํ๊ธฐ ์ ์ ๋ณด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ต๋๋ค.
- ๊ฒ์: ๊ฒ์์ด ์์๋๊ธฐ ์ ์ ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN)์์ ๊ฒ์ ์์ฐ ๋ฐ ๊ตฌ์ฑ ๋ฐ์ดํฐ๋ฅผ ๋ก๋ฉํฉ๋๋ค.
- ์ ์กฐ์ : ์์ธก ์ ์ง๋ณด์ ์์คํ ์ด ํ์ฑํ๋๊ธฐ ์ ์ ์ฅ๋น ๊ณ ์ฅ์ ์์ธกํ๋ ๋จธ์ ๋ฌ๋ ๋ชจ๋ธ์ ๋ํ ์ฐ๊ฒฐ์ ์ด๊ธฐํํฉ๋๋ค.
๊ฒฐ๋ก
์ต์์ Await๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋น๋๊ธฐ ๋ชจ๋ ์ด๊ธฐํ๋ฅผ ๋จ์ํํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๊ทธ ์ด์ , ํ๊ณ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ์ดํดํจ์ผ๋ก์จ, ์ด๋ฅผ ํ์ฉํ์ฌ ๋ ๊ฒฌ๊ณ ํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ฐ๋ฉฐ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๊ณ์ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์ต์์ Await๋ ํ๋ ์น ๊ฐ๋ฐ์์ ์ ์ ๋ ์ค์ํ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
์ฌ๋ ค ๊น์ ๋ชจ๋ ์ค๊ณ์ ์์กด์ฑ ๊ด๋ฆฌ๋ฅผ ํตํด ์ต์์ Await์ ์ ์ฌ์ ์ํ์ ์ํํ๋ฉด์ ๊ทธ ๊ฐ๋ ฅํจ์ ํ์ฉํ ์ ์์ผ๋ฉฐ, ๊ฒฐ๊ณผ์ ์ผ๋ก ๋ ๊นจ๋ํ๊ณ ๊ฐ๋ ์ฑ ๋์ผ๋ฉฐ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์์ต๋๋ค. ์ฌ๋ฌ๋ถ์ ํ๋ก์ ํธ์์ ์ด๋ฌํ ํจํด๋ค์ ์คํํด๋ณด๊ณ ๊ฐ์ํ๋ ๋น๋๊ธฐ ์ด๊ธฐํ์ ์ด์ ์ ๋ฐ๊ฒฌํด ๋ณด์ธ์.